perm filename BITS.FAI[4,KMC] blob
sn#177276 filedate 1975-09-17 generic text, type T, neo UTF8
TITLE BITS
ICH ← 1
OCH ← 2
MODE ← 10
IBYTSZ ← 7 ;THESE MAY BE SET INDEPENDENTLY
OBYTSZ ← 7 ;TO ANYTHING FROM 1 TO 44 OCTAL
A ← 1
B ← 2
.INSERT IODEFS.FAI[SEC,RCP] ;INSERT DOESN'T WORK IN MACRO
IBUF: BLOCK 3
OBUF: BLOCK 3
IFILE: SIXBIT /TEST/ ;SHOULD GET FILE FROM TTY
SIXBIT /IN/
0
0
OFILE: SIXBIT /TEST/
SIXBIT /OUT/
0
0
TABLE: BLOCK 1⊗IBYTSZ
START: INIT ICH,MODE
SIXBIT /DSK/
XWD 0,IBUF
JRST BOMB
MOVE A,[POINT IBYTSZ,0,35]
MOVEM A,IBUF+1
LOOKUP ICH,IFILE
JRST BOMB
INIT OCH,MODE
SIXBIT /DSK/
XWD OBUF,0
JRST BOMB
MOVE A,[POINT OBYTSZ,0,35]
MOVEM A,OBUF+1
ENTER OCH,OFILE
JRST BOMB
MOVEI A,1⊗IBYTSZ-1 ;IDENTITY MAPPING
ILOOP: MOVEM A,TABLE(A)
SOJGE A,ILOOP
JRST CLOOP
;---------NON-STANDARD TABLE GOES HERE
;SHOULD MAKE TYPICAL CONVERSIONS EASY OPTIONS
MOVEI A,37 ;CONTROL TO PRINTING
MOVEI B,137
CTLOOP: MOVEM B,TABLE(A)
SOJ B,
SOJGE A,CTLOOP
MOVEI A,37 ;LOWER TO UPPER
MOVEI B,137
SHLOOP: MOVEM B,TABLE+140(A)
SOJ B,
SOJGE A,SHLOOP
CLOOP: SOSG IBUF+2
JRST GETBUF
GETCHR:
ILDB A,IBUF+1
MOVE A,TABLE(A) ;GET CONVERSION
JUMPE A,CLOOP ;DELETE NULLS
SOSG OBUF+2
JRST PUTBUF
PUTCHR:
IDPB A,OBUF+1
JRST CLOOP
GETBUF: OUTSTR [ASCIZ /GETBUF
/] ;PROVIDES A PROGRESS REPORT
IN ICH,0
JRST GETCHR
RELEAS ICH,
RELEAS OCH,
JRST DONE
PUTBUF: OUTSTR [ASCIZ / PUTBUF
/]
OUT OCH,0
JRST PUTCHR
JRST BOMB
END START